/**
 * 检查权限
 * @param {Array} permissions 当前用户拥有的权限数组
 * @param {String|Array} requiredPermissions 需要的权限，可以是字符串或数组
 * @param {String} mode 检查模式：'every' - 需要全部匹配才返回true，'some' - 只要有一个匹配就返回true
 * @returns {Boolean} 是否有权限
 */
export function checkPermission(permissions, requiredPermissions, mode = 'some') {
  if (!permissions || !requiredPermissions) {
    return false
  }

  // 如果权限为 '*'，则表示拥有所有权限
  if (permissions.includes('*')) {
    return true
  }

  // 转为数组方便处理
  const required = Array.isArray(requiredPermissions) 
    ? requiredPermissions 
    : [requiredPermissions]

  // 根据模式检查是否拥有权限
  return mode === 'every'
    ? required.every(permission => permissions.includes(permission))
    : required.some(permission => permissions.includes(permission))
}

/**
 * 创建权限指令
 * @param {Object} Vue Vue实例
 */
export function createPermissionDirective(Vue) {
  Vue.directive('permission', {
    inserted(el, binding) {
      const { value, modifiers } = binding
      
      // 从localStorage获取用户信息
      const userInfoStr = localStorage.getItem('userInfo')
      const userInfo = userInfoStr ? JSON.parse(userInfoStr) : {}
      const permissions = userInfo.permissions || []
      
      const mode = modifiers.all ? 'every' : 'some'
      const hasPermission = checkPermission(permissions, value, mode)
      
      if (!hasPermission) {
        el.parentNode && el.parentNode.removeChild(el)
      }
    }
  })
} 